#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>
#include<cerrno>
#include<stdlib.h>
#include<sys/wait.h>


int main()
{
  printf("我变成了一个进程：%d\n",getpid());

  pid_t id=fork();
  if(id==-1)
  {
    perror("子进程申请失败!");
    exit(errno);
  }
  else if(id==0)
  {
    execl("/usr/bin/ls","ls","-l","-a",NULL);//程序替换函数
    exit(0);
  }

  int status=0;
  int rid = waitpid(id,&status,0);
  if(rid<0)
  {
    perror("子进程等待失败!");
  }

  if(!WIFEXITED(status))
  {
    printf("子进程异常退出，退出码:%d\n",WEXITSTATUS(status));
    if(WIFSIGNALED(status))
    {
      printf("子进程被信号终止，信号编号:%d\n",WTERMSIG(status));
    }
  }

  printf("我的代码运行中....\n");
  printf("我的代码运行中....\n");
  printf("我的代码运行中....\n");
  printf("我的代码运行中....\n");
  printf("我的代码运行中....\n");
  
  return 0;
}
